home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / park.zip / TIMPARK1.ASM < prev   
Assembly Source File  |  1986-10-11  |  3KB  |  199 lines

  1. code    Segment Para
  2.     Assume cs:code, ds:code
  3.     org    100h
  4. park    proc far
  5.     jmp    init
  6. x1coff     dw    0
  7. x1cseg     dw    0
  8. x13off     dw    0
  9. x13seg     dw    0
  10. parked    dw    0
  11. count    dw    0
  12. value    dw    0
  13. flag    dw    0
  14. oldax    dw    0
  15. oldip    dw    0
  16. oldcs    dw    0
  17. oldflgs    dw    0
  18.     even
  19. x1cint:    push    ax
  20.     push    bx
  21.     push    cx
  22.     push    dx
  23.     push    ds
  24.     mov    ax,cs
  25.     mov    ds,ax
  26.     xor    ax,ax
  27.     cmp    parked,ax
  28.     jne    x1cext
  29.     dec    word ptr count
  30.     cmp    count,ax
  31.     jne    x1cext
  32.     cmp    flag,1
  33.     je    x1cext
  34.     cli
  35.     mov    ax,1
  36.     mov    parked,ax
  37.     mov    flag,ax
  38.     mov    ax,value
  39.     mov    count,ax
  40.     pop    ds
  41.     pop    dx
  42.     pop    cx
  43.     pop    bx
  44.     pop    ax
  45.     mov    cs:oldax,ax
  46.     pop    ax    ;ip
  47.     mov    cs:oldip,ax
  48.     pop    ax      ;cs
  49.     mov    cs:oldcs,ax
  50.     pop    ax      ;flags
  51.     mov    cs:oldflgs,ax
  52.     mov    ax,offset parks
  53.  ;Generate an interrupt return to the parker
  54.     pushf
  55.     push    cs
  56.     push    ax
  57.     mov    ax,cs:oldax
  58.     sti
  59.     jmp    dword ptr cs:[x1coff]
  60. x1cext:    jmp    x1cout
  61. parks:    sti
  62.     push    ax
  63.     push    cx
  64.     push    dx
  65.     push    ds
  66.     mov    ax,cs
  67.     mov    ds,ax
  68. ;
  69. ;
  70. ;    Do the BIOS's dirty work so this code will work!
  71. ;
  72.     mov    al,020h
  73.     out    020h,al
  74. ;
  75. ;
  76. ;
  77.     mov    ah,08
  78.     mov    dx,80h
  79.     int    13h
  80.     mov    dx,80h
  81.      inc    ch
  82.     jnc    p1
  83.     add    cl,40h
  84. p1:    mov    ax,0c01h
  85.     int    13h
  86. ;
  87.     mov    ah,08
  88.     mov    dx,81h
  89.     int    13h
  90.     mov    dx,81h
  91.       inc    ch
  92.     jnc    p2
  93.     add    cl,40h
  94. p2:    mov    ax,0c01h
  95.     int    13h
  96. ;
  97.     xor    ax,ax
  98.     mov    flag,ax
  99.     pop    ds
  100.     pop    dx
  101.     pop    cx
  102.     mov    ax,cs:oldflgs
  103.     push    ax
  104.     popf
  105.     pop    ax
  106.      jmp    dword ptr cs:[oldip]
  107. x1cout:    pop    ds
  108.     pop    dx
  109.     pop    cx
  110.     pop    bx
  111.     pop    ax
  112. x1cou1:    jmp    dword ptr cs:[x1coff]
  113. x13int:    push    ax
  114.     push    ds
  115.     sti
  116.     mov    ax,cs
  117.     mov    ds,ax
  118.     cmp    flag,1
  119.     je    x13in1
  120.     mov    ax,value
  121.     mov    count,ax
  122.     xor    ax,ax
  123.     mov    parked,ax
  124. x13in1:    pop    ds
  125.     pop    ax
  126.     jmp    dword ptr cs:[x13off]
  127.     dw    0
  128. table    dw    0
  129. init:    xor    ax,ax
  130.     mov    parked,ax
  131.     mov    bx,80h
  132.     mov    al,[bx]
  133.     cmp    al,0
  134.     jne    init1
  135.     int    21h
  136. init1:    inc    bx
  137.     mov    al,[bx]
  138.     cmp    al,32
  139.     je    init1
  140.     cmp    al,13
  141.     jne    init3
  142. init2:    xor    ax,ax
  143.     int    21h
  144. init3:    cmp    al,49
  145.     jb    init2
  146.     cmp    al,57
  147.     ja    init2
  148.     lea    dx,mess
  149.     mov    cx,ax
  150.     mov    ah,09
  151.     int    21h
  152.     mov    ax,cx
  153.     xor    ah,ah
  154.     mov    bx,0fh
  155.     and    ax,bx
  156.     mov    dx,1091
  157.     mul    dx
  158.     mov    value,ax
  159.     mov    count,ax
  160.     cli
  161.     push    es
  162.     xor    ax,ax
  163.     mov    es,ax
  164.     mov    bx,76
  165.     mov    ax,es:[bx]
  166.     mov    x13off,ax
  167.     mov    ax,offset x13int
  168.     mov    es:[bx],ax
  169.     inc    bx
  170.     inc    bx
  171.     mov    ax,es:[bx]
  172.     mov    x13seg,ax
  173.     mov    ax,cs
  174.     mov    es:[bx],ax
  175.     xor    ax,ax
  176.     mov    flag,ax
  177.     mov    es,ax
  178.     mov    bx,112
  179.     mov    ax,es:[bx]
  180.     mov    x1coff,ax
  181.     mov    ax,offset x1cint
  182.     mov    es:[bx],ax
  183.     inc    bx
  184.     inc    bx
  185.     mov    ax,es:[bx]
  186.     mov    x1cseg,ax
  187.     mov    ax,cs
  188.     mov    es:[bx],ax
  189.     pop    es
  190.     sti
  191.     mov    dx,offset table
  192.     int    27h
  193. mess    db    'Alpha Computer Service timed parker is activated'
  194.     db    13,10,'for hard disks C and, if present, D'
  195.     db    13,10,'$'
  196. park    endp
  197. code    ends
  198.     end park
  199.